Ereignisse

Bemerkungen zu Ereignissen im ColumnTree

Bevor die Ereignisse für den ColumnTree registriert werden, sollte die Methode GET_REGISTERED_EVENTS aufgerufen werden.

Setzt man nämlich “einfach” das Event “Item_Double_Click”, dann wird evtl. auf einmal die Ordnerstruktur nicht mehr angezeigt! Durch das explizite Setzen mittels SET_REGISTERED_EVENTS wird das Event “EXPAND_NO_CHILDREN” gelöscht…

Eine Registrierung sollte also so z.B. aussehen:

*** data definition
  DATA lt_events TYPE cntl_simple_events.
  DATA ls_event  TYPE cntl_simple_event.

*** Get already registered events
  CALL METHOD gr_tree->get_registered_events
    IMPORTING
      events = lt_events.

*** define the events which will be passed to the backend
  ls_event-eventid = cl_gui_column_tree=>eventid_link_click.
  APPEND ls_event TO lt_events.
  ls_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
  APPEND ls_event TO lt_events.

*** set events
  CALL METHOD gr_tree->set_registered_events
    EXPORTING
      events = lt_events.

*** set Handler
  SET HANDLER lcl_treereceiver=>handle_link_click        FOR gr_tree.
  SET HANDLER lcl_treereceiver=>handle_item_double_click FOR gr_tree.

Doppelte Events sind nicht schlimm, solange APPL_EVENT identisch ist, also das Kennzeichen das steuert, ob Events einen Funktionscode auslösen.

Besser wäre es sicherlich, vorher zu prüfen, ob das Ereignis bereits registriert ist.

Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)

Leave a Comment